package com.google.code.lf.gfm.model.grisbi.compte;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

import com.google.code.lf.commons.util.ToStringHelper;

/**
 * Bean représentant un compte dans le fichier de données <a href="http://grisbi.org/">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @see Comptes.
 */
@XmlRootElement(name="Compte")
@XmlAccessorType(XmlAccessType.NONE)
@SuppressWarnings("unused")
public class Compte {
	@XmlElement(name="Details")
	private CompteDetails details;

	@XmlElementWrapper(name="Detail_de_Types", nillable=true)
	@XmlElement(name="Type")
	private List<CompteType> types;

	@XmlElementWrapper(name="Detail_des_operations")
	@XmlElement(name="Operation")
	private List<Operation> operations;

	/**
	 * Méthode <code>toString()</code> utilisant la réflection pour détailler l'objet.
	 * 
	 * @see ToStringHelper#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}

	// -- Getters / Setters

	/**
	 * @return {@link #operations}, la liste d'{@link Operation}, jamais <code>null</code>.
	 */
	public List<Operation> getOperations() {
		if (operations == null) operations = new ArrayList<Operation>();
		return operations;
	}
}
